09 JS函数

500次阅读
没有评论

共计 1429 个字符,预计需要花费 4 分钟才能阅读完成。

一. 函数定义

  • 用来封装你的重复性代码
  • 在 Python 中定义函数使用 def 很关键字
  • 在 js 中使用 function 定义函数
// 语法 
function [函数名](形参 1, 形参 2, 形参 3...){[ 函数体代码];
}
  • 无参函数
// 定义无参函数
function func1(){alert("Hello world");
}

// 调用
func1();  // "Hello world"
  • 有参函数
// 定义有参函数
function func2(name,age){alert(name+" 年芳 "+age);
}

// 调用
func2(" 小女子 ",28);  // " 小女子年芳 28"
func2(1,2,3,4)  // "1 年芳 2 " (参数过多不要紧, 只会取出相应的数据)
func2(1)  // "1 年芳 undefined" (参数少了也不要紧, 会以 undefined 填充)

二. 函数参数

  • 参数一般五个以下
  • 函数内引用的参数大于传入的参数会以 "undefined" 替代
  • 函数内引用的参数小于传入的参数, 那么只会取出相应的参数
function cook(isBad,a,b,c){ // isbad 形式参数
    if (isBad){alert('做饭');

    }else{alert('点一个外卖');
    }
}
var bad = false;  // 刀坏了
cook(bad);  // 点一个外卖
  • arguments 参数

能够获取到函数接受到的所有的参数

function alls(a,b,c,d){console.log(arguments);
}
alls(1,2,3)  // [1,2,3]

三. 函数返回值与函数表达式

  • 可以声明变量来接收函数返回值
//  加法
function addition(a,b){return a+b;}
// 减法
function subtraction(a,b){return a-b;}

// 乘法
function multiplication(a,b){return a*b;}

// 除法
function division(a,b){return a/b;}

// 调用
var r = addition(4,6);         // 10
var r1 = subtraction(4,6);     // -2
var r2 = multiplication(4,6);  // 24
var r3 = division(4,6);        // 0.666666666666
  • 函数表达式
var division = function(a,b){return a/b;}
// 调用
division(10,2)  // 5

四. 全局变量与局部变量

  • 函数外部的属于全局,函数内部的属于局部,只能在函数里面调用, 函数运行完毕, 局部变量就会被删除
  • 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它
var a = 1;
console.log(a);  // 1
function add(){
    var b = 2;
    console.log(b);  // 2
}
add();

// 无法调用,b 只是局部
console.log(b);  // 报错

五. 匿名函数

  • 没有名字的函数
  • 函数可以被赋值, 但对于一个匿名函数来说赋予名字没有意义
  • 匿名函数一般与 map() 之类的函数组合使用
function(){console.log("xxx");
}

六. 作用域

  • 首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。另外函数的作用域关系是在定义阶段就固定死的,与调用位置无关

七. 变量提升

  • 所有的声明都会提升到作用域的最顶上去
  • 同一个变量只会声明一次, 其他的被忽略掉
  • 函数的声明优先级高于变量声明的优先级, 并且函数声明和函数定义的部分一起被提升
正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计1429字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)